#pragma once

#include <sstream>
#include "zakengine/zak.h"
#include "telegram.h"

using namespace zak;

struct Telegram;

template<class T>
class BaseState 
{
public:
	
	// Class destructor
	virtual				~BaseState() {};

	// Enter Function
	virtual void		Enter(T*)=0;

	// Execute Function
	virtual void		Execute(T*)=0;

	// Exit Function
	virtual void		Exit(T*)=0;

	// On Message received
	virtual bool		OnMessage(T*, const Telegram&)=0;

private:

};